#include <stdio.h>

// 发现这道题目的返回值非常模糊
// 看题目描述不清楚是什么东西
// 现在来解释一下各个形参是什么东西
// nums是原数组 numsSize是数组的元素个数
// 这个最坑的是returnSize,这个需要传址修改之后用来做主函数循环打印修改过后的内容的
// 当时不知道这个的用途,所以卡半天

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* getConcatenation(int* nums, int numsSize, int* returnSize) 
{

    int* ans = (int*) malloc (sizeof(int) * 2 * numsSize) ; // 使用malloc函数传参

    *returnSize = 2 * numsSize ;

    for (int i = 0 ; i < 2 * numsSize ; i++)
    {

        int n = i % numsSize ;

        ans [i] = nums [n] ;

    }
    
    return ans ;
    
}

int main ()
{

    int array [] = {1 , 2 , 3} ;

    int numsSize = sizeof (array) / sizeof (array [0]) ;

    int returnSize = numsSize ;

    int* newarray = getConcatenation (array , numsSize , &returnSize) ; // 使用参数传进去,然后扩大后返回地址

    for (int i = 0 ; i < returnSize ; i++)
    {

        printf ("%d " , newarray [i]) ;

    }

    free (newarray) ;

    newarray = NULL ;

    return 0 ;

}